Virtual appliances, or VAs, are a specific type of software appliances. In general, a software appliance is a software solution comprising a software application (i.e., one or more application programs performing a specific user task) and the required operating system, which are encapsulated in a pre-built, self-contained package; typically, the operating system is a Just Enough Operating System, or JeOS (i.e., a limited operating system specifically tailored to support the software application). Particularly, a virtual appliance is a software appliance designed to run in a virtualized environment; for this purpose, the virtual appliance comprises one or more virtual machines, or VMs (i.e., emulations by software of physical machines), each one with its operating system and application programs. The virtual appliances provide a simplified management, and allow providing corresponding turnkey software services.
The deployment of the virtual appliances (onto a data processing system) generally involves the building of corresponding software images; the software image of each virtual appliance comprises a snapshot of a mass memory providing the definition of its virtual machines with the corresponding software programs (i.e., operating system and application programs) packaged according to a predefined specification (such as the Open Virtualization Format, or OVF). Whenever a new instance of a virtual appliance is required, the software image thereof is copied and applied so as to instantiate the corresponding virtual machines with their software programs. This allows provisioning corresponding services on demand in a very fast way (for example, in a cloud environment).
Several techniques are also known for improving specific aspects of the above-described deployment process.
For example, “Contextualization: Providing One-Click Virtual Clusters, eScience, 2008, IEEE Fourth International Conference on Date of Conference: 7-12 Dec. 2008, Keahey, K., Freeman, T.” discloses a technique for configuring the virtual machines (such as their IP addresses and hostnames) when they are deployed; this is based on a context broker that coordinates the exchange of application-specific contextualization information among context agents of the virtual appliances.
WO-A-2012/069296 discloses a technique for adding pre-requisite software required by an environment of the virtual appliance. For this purpose, a list of the pre-requisite software is added to a distribution package of the virtual appliance; when the virtual appliance is deployed, each pre-requisite software that is not available is retrieved from a location indicated in the same distribution package and installed only after a user has approved a corresponding license text.
EP-A-2043320 proposes adding a ticket to each virtual machine descriptor, which ticket is used to download virtual machine configuration information from a provisioning server.
US-A-2010/0042988 discloses an installation manager, which provides configuration options, scripts, and other information to a configuration agent operating in each virtual machine.
US-A-2010/0011353 discloses a technique for deploying a virtual appliance, wherein network settings of a virtualization software are changed to match a deployment configuration file of the virtual appliance.
US-A-2010/0235482 proposes modifying substantially identical virtual appliances by installing different interactive applications before their deployment.
US-A-2010/0058328 discloses a technique for differential software provisioning on virtual machines having different configurations, wherein a provisioning server interacts with a local virtual machine installation client to initiate a software provisioning process for diverse sets of virtual machines.
US-A-2009/0172662 discloses a technique for configuring virtual machines at their booting according to application and operating system files included in a corresponding virtual machine image file.
US-A-2011/0004676 discloses a technique for configuring a virtual appliance according to a setting file having attributes that are replaced by specific values stored in a configuration data database.